package com.wicket.okrapp.dal.po.mbg;

import com.baomidou.mybatisplus.annotation.*;
import com.wicket.okrapp.common.annotations.LikeFlag;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import javax.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 *
 *
 * @author xxx
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName("oms_target_objective")
public class OmsTargetObjective extends BaseEntity {

  private static final long serialVersionUID = 1L;

  /**
   * 指标ID
   */
  @TableId(value = "objective_id", type = IdType.UUID)
  @NotNull(message = "objectiveId不能为空")
  private String objectiveId;

  /**
   * 指标标识
   */
  @TableField(value = "objective_code")
  @NotNull(message = "指标标识不能为空")
  @ApiModelProperty("指标标识")
  @LikeFlag(likeType = "RIGHT_LIKE")
  private String objectiveCode;

  /**
   * 指标编号
   */
  @TableField(value = "objective_number")
  @NotNull(message = "指标编号不能为空")
  @ApiModelProperty("指标编号")
  private String objectiveNumber;

  /**
   * 指标名称
   */
  @TableField(value = "objective_name")
  @ApiModelProperty("指标名称")
  private String objectiveName;

  /**
   * 指标简称
   */
  @TableField(value = "objective_short_name")
  @ApiModelProperty("指标简称")
  private String objectiveShortName;

  /**
   * 执行措施要求
   */
  @TableField(value = "implement_requirement")
  @ApiModelProperty("执行措施要求")
  private String implementRequirement;

  /**
   * 佐证材料要求
   */
  @TableField(value = "support_requirement")
  @ApiModelProperty("佐证材料要求")
  private String supportRequirement;

  /**
   * 备注
   */
  @TableField(value = "remark")
  @ApiModelProperty("备注")
  private String remark;

  /**
   * 层级
   */
  @TableField(value = "level_number")
  @NotNull(message = "层级不能为空")
  @ApiModelProperty("层级")
  private Long levelNumber;

  /**
   * 目标类型 PERSON_LIABLE:团队目标 INITIATOR:个人目标 PARTICIPANTS:111111协同目标
   */
  @TableField(value = "target_type")
  @NotNull(message = "目标类型不能为空")
  @ApiModelProperty("目标类型")
  private String targetType;

  /**
   * 周期模式类型编码 FATHER_SON_CYCLE:父子周期 SINGLE_CYCLE:单周期 IRREGULAR_CYCLE:不规则周期
   */
  @TableField(value = "periodic_mode_type_code")
  @NotNull(message = "周期模式类型编码不能为空")
  @ApiModelProperty("周期模式类型编码")
  private String periodicModeTypeCode;

  /**
   * 归属父级指标ID
   */
  @TableField(value = "parent_objective_id")
  @ApiModelProperty("归属父级指标ID")
  private String parentObjectiveId;

  /**
   * 冗余一级指标ID
   */
  @TableField(value = "root_objective_id")
  @ApiModelProperty("冗余一级指标ID")
  private String rootObjectiveId;

  /**
   * 是否末级指标 TRUE:是 FALSE:否
   */
  @TableField(value = "is_last_objective")
  @NotNull(message = "是否末级指标不能为空")
  @ApiModelProperty("是否末级指标")
  private String isLastObjective;

  /**
   * 归属父级目标分类ID
   */
  @TableField(value = "parent_target_category_id")
  @ApiModelProperty("归属父级目标分类ID")
  private String parentTargetCategoryId;

  /**
   * 关联末级目标分类ID
   */
  @TableField(value = "correlation_last_target_cat_id")
  @NotNull(message = "关联末级目标分类ID不能为空")
  @ApiModelProperty("关联末级目标分类ID")
  private String correlationLastTargetCatId;

  /**
   * 冗余一级目标分类ID
   */
  @TableField(value = "root_target_category_id")
  @NotNull(message = "冗余一级目标分类ID不能为空")
  @ApiModelProperty("冗余一级目标分类ID")
  private String rootTargetCategoryId;

  /**
   * 冗余目标ID
   */
  @TableField(value = "target_id")
  @NotNull(message = "冗余目标ID不能为空")
  @ApiModelProperty("冗余目标ID")
  private String targetId;

  /**
   * 冗余指标模板ID
   */
  @TableField(value = "objective_template_id")
  @NotNull(message = "冗余指标模板ID不能为空")
  @ApiModelProperty("冗余指标模板ID")
  private String objectiveTemplateId;

  /**
   * 冗余指标模板类型 QUALITATIVE:定性 RATION:定量
   */
  @TableField(value = "objective_type")
  @NotNull(message = "冗余指标模板类型不能为空")
  @ApiModelProperty("冗余指标模板类型")
  private String objectiveType;

  /**
   * 冗余是否有目标值 TRUE:是 FALSE:否
   */
  @TableField(value = "is_use_target_value")
  @ApiModelProperty("冗余是否有目标值")
  private String isUseTargetValue;

  /**
   * 冗余指标业务类型 NUMBER_GROWTH:数量增长型 NUMBER_DECLINE:数量降幅型 PERCENTAGE_GROWTH:百分比增长型 PERCENTAGE_DECLINE:百分比降幅型 PROGRESS:进度型 RATIO_GROWTH:比率增长型 RATIO_DECLINE:比率降幅型 SUBJECTIVE_QUALITATIVE:主观定性
   */
  @TableField(value = "target_value_type")
  @NotNull(message = "冗余指标业务类型不能为空")
  @ApiModelProperty("冗余指标业务类型")
  private String targetValueType;

  /**
   * 冗余是否左侧比例型 TRUE:是 FALSE:否
   */
  @TableField(value = "is_left")
  @ApiModelProperty("冗余是否左侧比例型")
  private String isLeft;

  /**
   * 冗余单位
   */
  @TableField(value = "unit")
  @ApiModelProperty("冗余单位")
  private String unit;

  /**
   * 冗余数字单位
   */
  @TableField(value = "digital_unit")
  @ApiModelProperty("冗余数字单位")
  private Double digitalUnit;

  /**
   * 计算数据来源 MANUAL_FILLING:人工填报 SYSTEM_DOCKING:系统对接
   */
  @TableField(value = "calculate_data_source")
  @NotNull(message = "计算数据来源不能为空")
  @ApiModelProperty("计算数据来源")
  private String calculateDataSource;

  /**
   * 系统对接计算点 CALCULATE:计算实际值 SCORE_AFTER_CALCULATE:计算实际值得分
   */
  @TableField(value = "system_docking")
  @ApiModelProperty("系统对接计算点")
  private String systemDocking;

  /**
   * 是否引用指标 TRUE:是 FALSE:否
   */
  @TableField(value = "is_reference")
  @NotNull(message = "是否引用指标不能为空")
  @ApiModelProperty("是否引用指标")
  private String isReference;

  /**
   * 是否被引用 TRUE:是 FALSE:否
   */
  @TableField(value = "is_be_referenced")
  @NotNull(message = "是否被引用不能为空")
  @ApiModelProperty("是否被引用")
  private String isBeReferenced;

  /**
   * 是否已引用 TRUE:是 FALSE:否
   */
  @TableField(value = "is_already_referenced")
  @NotNull(message = "是否已引用不能为空")
  @ApiModelProperty("是否已引用")
  private String isAlreadyReferenced;

  /**
   * 是否共享指标 TRUE:是 FALSE:否
   */
  @TableField(value = "is_share")
  @NotNull(message = "是否共享指标不能为空")
  @ApiModelProperty("是否共享指标")
  private String isShare;

  /**
   * 指标引用方式 SIMPLE_REFERENCE:一键引用 SENIOR_REFERENCE:高级引用
   */
  @TableField(value = "reference_way")
  @ApiModelProperty("指标引用方式")
  private String referenceWay;

  /**
   * 是否开启主观评分 TRUE:是 FALSE:否
   */
  @TableField(value = "is_subjective_scoring")
  @NotNull(message = "是否开启主观评分不能为空")
  @ApiModelProperty("是否开启主观评分")
  private String isSubjectiveScoring;

  /**
   * 是否已下发指标达成度数据 TRUE:是 FALSE:否
   */
  @TableField(value = "is_accept_objective_reach_data")
  @ApiModelProperty("是否已下发指标达成度数据")
  private String isAcceptObjectiveReachData;

  /**
   * 是否开启量化客观评分 TRUE:是 FALSE:否
   */
  @TableField(value = "is_objective_quantization")
  @NotNull(message = "是否开启量化客观评分不能为空")
  @ApiModelProperty("是否开启量化客观评分")
  private String isObjectiveQuantization;

  /**
   * 批次标识
   */
  @TableField(value = "batch_code")
  @ApiModelProperty("批次标识")
  private String batchCode;

  /**
   * 创建于批次标识
   */
  @TableField(value = "create_batch_code")
  @ApiModelProperty("创建于批次标识")
  private String createBatchCode;

  /**
   * 排序
   */
  @TableField(value = "order_number")
  @ApiModelProperty("排序")
  private Long orderNumber;

  /**
   * 批次开始时间
   */
  @TableField(value = "batch_start_time")
  @ApiModelProperty("批次开始时间")
  private Date batchStartTime;

  /**
   * 部门排序
   */
  @TableField(value = "duty_body_order_num")
  @ApiModelProperty("部门排序")
  private Long dutyBodyOrderNum;

  /**
   * 批次结束时间
   */
  @TableField(value = "batch_endt_time")
  @NotNull(message = "批次结束时间不能为空")
  @ApiModelProperty("批次结束时间")
  private Date batchEndtTime;

  /**
   * 个人排序
   */
  @TableField(value = "personal_order_number")
  @ApiModelProperty("个人排序")
  private Long personalOrderNumber;

  /**
   * 批次下是否更新 TRUE:是 FALSE:否
   */
  @TableField(value = "is_update")
  @NotNull(message = "批次下是否更新不能为空")
  @ApiModelProperty("批次下是否更新")
  private String isUpdate;

  /**
   * 权重排序
   */
  @TableField(value = "weight_order_number")
  @ApiModelProperty("权重排序")
  private Long weightOrderNumber;

  /**
   * 主体生命周期 CURRENTLY_VALID:当前有效 EDITING:正在编辑 ARCHIVING:历史存档
   */
  @TableField(value = "subject_life_cycle")
  @NotNull(message = "主体生命周期不能为空")
  @ApiModelProperty("主体生命周期")
  private String subjectLifeCycle;

  /**
   * 批次下更新状态 NEW:本次新增 UNCHANGED:正常未变 REVISION:本次修订 ARCHIVE:本次存档
   */
  @TableField(value = "update_status")
  @NotNull(message = "批次下更新状态不能为空")
  @ApiModelProperty("批次下更新状态")
  private String updateStatus;

  /**
   * 冗余评价模板ID
   */
  @TableField(value = "evaluation_template_id")
  @NotNull(message = "冗余评价模板ID不能为空")
  @ApiModelProperty("冗余评价模板ID")
  private String evaluationTemplateId;

  /**
   * 是否存档 TRUE:是 FALSE:否
   */
  @TableField(value = "is_archive")
  @NotNull(message = "是否存档不能为空")
  @ApiModelProperty("是否存档")
  private String isArchive;

  /**
   * 存档类型 NOT_ARCHIVE:未归档 TOBE_ARCHIVING:想归档 ARCHIVED:已归档
   */
  @TableField(value = "archivng_type")
  @NotNull(message = "存档类型不能为空")
  @ApiModelProperty("存档类型")
  private String archivngType;

  /**
   * 是否未来 TRUE:是 FALSE:否
   */
  @TableField(value = "is_editing")
  @NotNull(message = "是否未来不能为空")
  @ApiModelProperty("是否未来")
  private String isEditing;

  /**
   * 操作人就职记录ID
   */
  @TableField(value = "operation_induction_id")
  @NotNull(message = "操作人就职记录ID不能为空")
  @ApiModelProperty("操作人就职记录ID")
  private String operationInductionId;

  /**
   * 创建人就职记录ID
   */
  @TableField(value = "create_induction_id")
  @NotNull(message = "创建人就职记录ID 不能为空")
  @ApiModelProperty("创建人就职记录ID ")
  private String createInductionId;

  /**
   * 发布人就职记录ID
   */
  @TableField(value = "release_induction_id")
  @ApiModelProperty("发布人就职记录ID")
  private String releaseInductionId;

  /**
   * 存档人就职记录ID
   */
  @TableField(value = "archive_induction_id")
  @ApiModelProperty("存档人就职记录ID")
  private String archiveInductionId;

  /**
   * 是否作废 TRUE:是 FALSE:否
   */
  @TableField(value = "is_valid")
  @NotNull(message = "是否作废不能为空")
  @ApiModelProperty("是否作废")
  private String isValid;

  /**
   * 操作时间
   */
  @TableField(value = "operate_time")
  @NotNull(message = "操作时间不能为空")
  @ApiModelProperty("操作时间")
  private Date operateTime;

  /**
   * 创建时间
   */
  @TableField(value = "create_time")
  @NotNull(message = "创建时间不能为空")
  @ApiModelProperty("创建时间")
  private Date createTime;

  /**
   * 创建于空间ID
   */
  @TableField(value = "space_id")
  @NotNull(message = "创建于空间ID不能为空")
  @ApiModelProperty("创建于空间ID")
  private String spaceId;

  /**
   * 发布时间
   */
  @TableField(value = "release_time")
  @ApiModelProperty("发布时间")
  private Date releaseTime;

  /**
   * 创建于联盟应用ID
   */
  @TableField(value = "app_id")
  @NotNull(message = "创建于联盟应用ID不能为空")
  @ApiModelProperty("创建于联盟应用ID")
  private String appId;

  /**
   * 存档时间
   */
  @TableField(value = "archive_time")
  @ApiModelProperty("存档时间")
  private Date archiveTime;
}
